Understanding Array-To-Pointer Conversion In C And C++